package cn.net.sinodata.system.domain.bo;

import cn.net.sinodata.system.domain.BmTransLogRecord;
import cn.net.sinodata.common.mybatis.core.domain.BaseEntity;
import cn.net.sinodata.common.core.validate.AddGroup;
import cn.net.sinodata.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;

/**
 * 交易日志业务对象 bm_trans_log_record
 *
 * @author chenbaijun
 * @date 2025-10-31
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BmTransLogRecord.class, reverseConvertGenerate = false)
public class BmTransLogRecordBo extends BaseEntity {

    /**
     * 主键
     */
    @NotBlank(message = "主键不能为空", groups = { EditGroup.class })
    private String id;

    /**
     * 交易流水
     */
    @NotBlank(message = "交易流水不能为空", groups = { AddGroup.class, EditGroup.class })
    private String transSerial;

    /**
     * 交易渠道（0-外汇交易中心，1-中债，2-上清）
     */
    @NotBlank(message = "交易渠道（0-外汇交易中心，1-中债，2-上清）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String transChannelCode;

    /**
     * 接入渠道（1-网新 2-STP 3-统一支付）
     */
    @NotBlank(message = "接入渠道（1-网新 2-STP 3-统一支付）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String connectChannel;

    /**
     * 接入方式（1-接口查询 2-数据抽取）
     */
    @NotBlank(message = "接入方式（1-接口查询 2-数据抽取）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String connectType;

    /**
     * 处理状态（0-待处理，1-处理中，2-处理完成，3-处理异常）
     */
    @NotBlank(message = "处理状态（0-待处理，1-处理中，2-处理完成，3-处理异常）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String processState;

    /**
     * 状态描述
     */
    private String stateComment;

}
